<?php

declare(strict_types=1);

namespace app\common\business;

//use app\common\lib\sms\AliSms;
use app\common\lib\Num;
use app\common\lib\ClassArr;

/**
 * 短信业务层
 * Class Sms
 * @package app\common\business
 */
class Sms {

    /**
     * @param string $phoneNumber
     * @param int $len
     * @param string $type
     * @return bool
     * @throws \ReflectionException
     */
    public static function sendCode(string $phoneNumber, int $len, string $type = 'ali'): bool {

        // 生成短信验证码
        // $code = Num::getCode($len);
        $code = 1234;
        //$sms = AliSms::sendCode($phoneNumber, $code);

        // 2.工厂模式
        //$type = ucfirst($type);
        //$class = 'app\common\lib\sms\' . $type . 'Sms';
        //$sms = $class::sendCode($phoneNumber, $code);

        // 3.反射模式
        $classStats = ClassArr::smsClassStat();
        $classObj = ClassArr::initClass($type, $classStats);
        //$sms = $classObj::sendCode($phoneNumber, $code);
        $sms = true;
        if ($sms) {
            // 需要把我们得短信验证码记录到redis 并且需要给出一个失效时间 1分钟
            // 1 、我们得PHP环境是否有 redis扩展 redis.dll  linux unix：redis.so
            // 2 redis服务
            cache(config('redis.code_pre') . $phoneNumber, $code, config('redis.code_expire'));
        }

        return $sms;
    }
}